#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//using namespace std;

//float Add(float x, float y)
//{
//	return x + y;
//}
//
//double Add(double x, double y)
//{
//	return x + y;
//}
//
//char Add(char x, char y)
//{
//	return x + y;
//}
//
//int Add(int x, int y)
//{
//	cout << "int Add(int x, int y)" << endl;
//	return x + y;
//}
//
//template <class T>
//T Add(T x, T y)
//{
//	cout << "T Add(T x, T y)" << endl;
//	return x + y;
//}
//
//int main()
//{
//	Add(1,2);
//
//	Add(1.3f,2.4f);
//
//	Add(1.1,2.2);
//
//	return 0;
//}

#include<iostream>
#include<assert.h>
using namespace std;

template<class T>
class stack
{
public:
	stack(size_t n = 4)
		:_st(new double[n])
	{ }

	void push(const double& val)
	{
		_st[_size++] = val;
	}

	void pop()
	{
		assert(_size >= 0);
		_size--;
	}

	double& top()	{	return _st[_size - 1];	}

private:
	double* _st;
	size_t _size = 0;
	size_t _capacity = 0;
};

int main()
{
	stack<int> s1;
	stack<double> s2;

	return 0;
}

//Test.cpp
//#include"Add.h"
//
//int main()
//{
//	Add(1, 2);
//	Add(1.1, 2.2);
//
//	return 0;
//}